이콜레모 개발자 위키

Page history of DOM vs ElementTree



Title: 파이썬에서 XML과 HTML 다루기 | edited by Youngrok Pak at 11 years, 11 months ago.

파서의 선택

파이썬에서 XML 다루는 도구로 표준 DOM에 가까운 minidom이 있지만, 현재 파이썬 커뮤니티에서는 ElementTree를 권장한다. ElementTree는 DOM을 좀더 pythonic하게 쓰자는 생각에서 만든 것으로, 이름에서 알 수 있듯이 XML의 구성 요소 중에서 Element를 중심으로 트리를 구성한다. 원래 DOM에서는 Node로 트리가 구성되며 Element는 Node의 일종으로 취급된다. 이 차이는 이를테면 다음과 같은 XML 문서가 있을 경우,

<h1>Hello<strong>World</strong>!!</h1>

ElementTree에서는 다음처럼 노드가 구성된다.

  • Element h1
  • h1.text = Hello
  • Element strong
  • strong.text = World
  • strong.tail = !!

DOM에서는 다음과 같다.

  • Element h1
  • Text Hello
  • Element strong
  • Text World
  • Text !!

누 가 봐도 DOM이 더 자연스러운데 왜 ElementTree가 더 pythonic하다는 것일까? 그 이유는 DOM의 API가 상당히 번거롭기 때문이다. XML의 구조를 온전히 반영하려다보니 간단하게 키/값만 엑세스하고 싶을 때는 몹시 귀찮다. 실제로 XML이 쓰일 때 위의 경우처럼 텍스트 사이사이의 엘리먼트가 많이 들어가고, 또 그 순서가 중요한 경우는 HTML 외에는 거의 없다. 그러다보니 API가 좀더 단순한 ElementTree가 유리한 것이다. 얼마나 유리한지 한 번 비교해보자.

 

pyquery

lxml 성능

BeautifulSoup

minidom

html5lib

 

Wiki at WikiNamu